#ifndef UTIL_H
#define UTIL_H

#include <QString>
#include <QDebug>
#include <QFileInfo>

static inline QString getFileName(const QString& path) {
    QFileInfo fileInfo(path);
    return fileInfo.fileName();
}

// 封装⼀个 "宏" 作为打印⽇志的⽅式.
#define TAG QString("[%1:%2]").arg(getFileName(__FILE__), QString::number(__LINE__))

// #define TAG "[" << __LINE__ << "]"
// qDebug 打印字符串的时候, 就会⾃动加上 " "
#define LOG() qDebug().noquote() << TAG


// 读文件操作：从指定文件中，读取所有的二进制内容，将其保存到QByteArray中
static inline QByteArray loadFileToByteArray(const QString& fileName){
    QFile file(fileName);
    bool ok = file.open(QFile::ReadOnly);
    if(!ok){
        LOG()<<"文件打开失败";
        return QByteArray();
    }

    QByteArray content = file.readAll();
    file.close();
    return content;
}

// 写文件操作：将QByteArray中的内容，写到指定的文件中
static inline void writeByteArrayToFile(const QString fileName, const QByteArray& content){
    QFile file(fileName);
    bool ok = file.open(QFile::WriteOnly);
    if(!ok){
        LOG()<<"打开文件失败!";
        return;
    }

    file.write(content);
    file.flush();
    file.close();
}

#endif // UTIL_H
